מחלקת התחברות לא פועלת
{
$User = new User();
$User->LogIn($_POST['UserName'], $_POST['Password']);
}
/*-----------*/
class User
{
function LogIn($UserName, $Password)
{
if (mysql_query ("SELECT * FROM `users` WHERE `UserName` = $UserName AND `Password` = $Password LIMIT 1"))
{
print ('Success');
}
else
{
print ('Try Again');
}
}
}
18 תשובות
למה אתה שם גרשים כאלה (`) מסביב לשמות? אני לא חושב שזה צריך להיות שם, וייתכן שזה מה שגורם לבעיה. נסה להשתמש ב-mysql_error כדי לראות אם יש שגיאת MySQL אחרי זה. או אולי יש שגיאת התחברות?
זה כמובן עוד בלי להיכנס לזה שכל הפונקציות שמתחילות ב-mysql_ יצאו מהשפה כך שעכשיו חייבים לעבור ל-MySQLi (מדריך פשוט בגישה פרוצדורלית - לא OOP) או ל-PDO, ובלי להיכנס לחור האבטחה שיש לך כאן (SQL Injection), שאפשר למנוע באמצעות Prepared Statements (חפש בגוגל).
אני משתמש בגירסה 5.3 אז אני לא חייב MySQLi
הינה המחלקה החדשה והיא עדיין לא עובדת
{
public function LogIn($UserName, $Password)
{
$sql = mysql_query ("SELECT * FROM users WHERE UserName = $UserName AND Password = $Password LIMIT 1");
print (mysql_error($sql));
if ($sql)
{
print ('Success');
print (mysql_error($sql));
}
else
{
print ('Try Again');
print (mysql_error($sql));
}
}
}
איפה ההתחברות לבסיס הנתונים? (שאת זה, אגב, אתה מעביר ל-mysqli_error, ולא את מה שאתה מקבל מהשאילתה.)
למיטב זיכרוני בגישה הפרוצדורלית החיבור מועבר בין הפונקציות בתור resource (המשתנה ששמת אותו בו). למחלקה הזאת אין גישה לשם. הנה שאלה ממש לא מזמן בדיוק על זה.
לא הבנתי איך זה קשור אלי
הינה כל הקוד למי שרוצה
http://pastebin.com/szSenafv
קשור מאוד. (לפחות לפי איך שזה עובד באחרים. אני לא יודע אם בהרחבה הישנה הזאת זה גם ככה. אם אתה רוצה אתה יכול תמיד לחפש בגוגל.)
תעביר את שורות 2-3 לתוך LogIn(), ותעביר את $ConnectDB ל-mysql_error במקום את $sql.
אתה אמור לשים גרשיים מסביב למה שאתה מעביר.
אתה בטוח שלמדת MySQL כמו שצריך?
בזמנו התכוונתי לשם של הטבלה, ולא לשם של העמודות.
תשמע, אין לי מושג. אולי אני אעבור על זה יותר ביסודיות מאוחר יותר, ואולי מישהו אחר יענה לך.
בכל מקרה, כל פעם תסביר בדיוק מה קורה. למשל, "עדיין לא עוזר" - לשגיאה האחרונה או באופן כללי?